(()=>{
    const $toString = Function.toString;
    const Symbol_toString = Symbol('()_' + Math.random())
    const mytoString = function(){return typeof this == 'function' && this[Symbol_toString] || $toString.call(this);}
    const set_native = function(obj,prop,value){
        return Object.defineProperty(obj,prop,{
            enumerable:false,
            configurable:true,
            writeable:true,
            value:value
        })
    };
    delete Function.prototype.toString;
    set_native(Function.prototype,'toString',mytoString);
    set_native(Function.prototype.toString,Symbol_toString,`function toString() { [native code] }`);
    protect = function(obj){
        return set_native(obj,Symbol_toString,`function ${obj.name}() { [native code] }`)
    };
})()
debugger;